unit AnaliseRecordFr;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  ExtCtrls, Buttons, DBCtrls, StdCtrls, DBGrids, ComCtrls, ActnList, Menus,
  MainRecordFr;

type

  { TAnaliseRecordFrame }

  TAnaliseRecordFrame = class(TMainRecordFrame)
    LaudoPDFAction: TAction;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    RelatorioPopupMenu: TPopupMenu;
    LaudoImprimirAction: TAction;
    AlterarAmostrasButton: TToolButton;
    ButtonBuscarPodutor: TBitBtn;
    CancelarAmostrasButton: TToolButton;
    DBData: TDBEdit;
    DBEdit1: TDBEdit;
    AmostraDBGrid: TDBGrid;
    DBIDProdutor: TDBEdit;
    DBIDTecnico: TDBEdit;
    DBNavigatorAmostra: TDBNavigator;
    DBNomeProdutor: TDBEdit;
    DBNomeTecnico: TDBEdit;
    DBNumeroRegistro: TDBEdit;
    DBValor: TDBEdit;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    RecordToolBar1: TToolBar;
    SalvarAmostrasButton: TToolButton;
    ToolButton14: TToolButton;
    ToolButton15: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    procedure AlterarAmostrasButtonClick(Sender: TObject);
    procedure ButtonBuscarPodutorClick(Sender: TObject);
    procedure CancelarAmostrasButtonClick(Sender: TObject);
    procedure LaudoImprimirActionExecute(Sender: TObject);
    procedure LaudoPDFActionExecute(Sender: TObject);
    procedure SalvarAmostrasButtonClick(Sender: TObject);
    procedure ControlaBotoes; override;
  end;

implementation

uses MainFr, AnaliseDM, TransactionDM, RelatorioDM, Initializator;

procedure TAnaliseRecordFrame.AlterarAmostrasButtonClick(Sender: TObject);
begin
  // Edição de Detalhes
  TTransactionDataModule(MainDataModule).EditDetail();
  ControlaBotoes();
end;

procedure TAnaliseRecordFrame.ButtonBuscarPodutorClick(Sender: TObject);
begin
  TheControl.ShowForeignFrame(TMainFrame(ProdutorSearchFrame));
end;

procedure TAnaliseRecordFrame.CancelarAmostrasButtonClick(Sender: TObject);
begin
  // Cancela a edição de detalhes
  TTransactionDataModule(MainDataModule).CancelDetail();
  ControlaBotoes();
end;

procedure TAnaliseRecordFrame.LaudoImprimirActionExecute(Sender: TObject);
begin
  RelatorioData.MostraRelatorio();
end;

procedure TAnaliseRecordFrame.LaudoPDFActionExecute(Sender: TObject);
begin
  RelatorioData.SalvaPDF();
end;

procedure TAnaliseRecordFrame.SalvarAmostrasButtonClick(Sender: TObject);
begin
  // Salva a edição de detalhes
  TTransactionDataModule(MainDataModule).PostDetail();
  ControlaBotoes();
end;

procedure TAnaliseRecordFrame.ControlaBotoes;
var
  I: integer;
  InTrans: boolean;
begin
  // Verifica se á uma transação ativa
  InTrans := MainDataModule.InTransaction();
  if not InTrans then begin
    // Se não houver
    // Habilita todas as ações
    for I := 0 to RecordActionList.ActionCount - 1 do begin
      TAction(RecordActionList.Actions[I]).Enabled := true;
    end;
    // Chama o controle de botões ancestral
    inherited ControlaBotoes;
    LaudoImprimirAction.Enabled:=AlterarAction.Enabled;
    LaudoPDFAction.Enabled:=AlterarAction.Enabled;
    // O Botão alterar amostras é habilitado se a ação de alterar também estiver
    AlterarAmostrasButton.Enabled := AlterarAction.Enabled;
    // Desabilita botões de salvar e cancelar amostras
    SalvarAmostrasButton.Enabled := false;
    CancelarAmostrasButton.Enabled := false;
    // Coloca o grid de amostras em somente leitura
    AmostraDBGrid.ReadOnly := true;
    // Desabilita o navegador de amostras
    DBNavigatorAmostra.Enabled := false;
    // Habilita o navegador e groupbox principais
    RecordDBNavigator.Enabled := true;
    PrincipalGroupBox.Enabled := true;
  end else begin
    // Se houver uma trasanão em andamento
    // Desabilita botão de alterar
    AlterarAmostrasButton.Enabled := false;
    // Habilitar botões de salvar e cancelar as amostras
    SalvarAmostrasButton.Enabled := true;
    CancelarAmostrasButton.Enabled := true;
    // Permite a edição do DBGrid
    AmostraDBGrid.ReadOnly := false;
    // Habilita navegador de amostras
    DBNavigatorAmostra.Enabled := true;
    // Desabilita navegar e groupbox principais
    RecordDBNavigator.Enabled := false;
    PrincipalGroupBox.Enabled := false;
    // Desabilita todas as ações
    for I := 0 to RecordActionList.ActionCount - 1 do begin
      TAction(RecordActionList.Actions[I]).Enabled := false;
    end;
  end;
end;


{ TAnaliseRecordFrame }

initialization
  {$I analiserecordfr.lrs}

end.
